﻿// <copyright file="IOrifice.cs" company="City of Portland, BES-ASM">
// </copyright>
// <summary>IOrifice interface</summary>

namespace BESASM.EMGAATS.BusinessClasses
{
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;

  /// <summary>
  /// Interface for <see cref="Orifice"/>
  /// </summary>
  public interface IOrifice : IEntity
  {
    /// <summary>
    /// Gets or sets the name of the orifice
    /// </summary>
    string OrificeName { get; set; }

    /// <summary>
    /// Gets or sets the upstream node of the orifice
    /// </summary>
    INode USNode { get; set; }

    /// <summary>
    /// Gets or sets the downstream node of the orifice
    /// </summary>
    INode DSNode { get; set; }

    /// <summary>
    /// Gets or sets the downstream link of the weir
    /// </summary>
    ILink ToLink { get; set; }

    /// <summary>
    /// Gets or sets the orientation of orifice; <see cref="OrificeOrientation"/>
    /// </summary>
    OrificeOrientation Orientation { get; set; }

    /// <summary>
    /// Gets or sets the area of the orifice, in square feet
    /// </summary>
    double AreaSqFt { get; set; }

    /// <summary>
    /// Gets or sets the coefficient of the orifice
    /// </summary>
    double Coefficient { get; set; }

    /// <summary>
    /// Gets or sets the shape of the orifice
    /// </summary>
    OrificeShape OrificeShape { get; set; }

    /// <summary>
    /// Gets or sets the invert offset of the orifice from the node invert in feet
    /// </summary>
    double InvertOffsetFt { get; set; }

    /// <summary>
    /// Gets a value indicating whether orifice has a ToLink specified
    /// </summary>
    bool HasToLink { get; }
  }
}
